//
//  XTVistorView.swift
//  MyBlog
//
//  Created by victor on 16/12/14.
//  Copyright © 2016年 victor. All rights reserved.
//

import UIKit
import SnapKit

/// 访客视图
class XTVistorView: UIView {

    /// 访客视图信息字典 [imageName / message]
    // 如果是首页imageName == ""
    var vistorInfo : [String: String]? {
        didSet {
            guard let imageName = vistorInfo?["imageName"],
                let message = vistorInfo?["message"] else {
                    return
            }
            
            // 设置消息
            tipLabel.text = message
            
            // 设置图像，首页不需要设置
            if imageName == "" {
                startAnimation()
                return
            }
            
            iconView.image = UIImage(named: imageName)
            
            // 其他控制器的访问视图不需要显示小房子/遮罩视图
            houseIconView.isHidden = true
            maskIconView.isHidden = true
        }
    }
    
    //MARK: -构造函数
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    /// 旋转图标动画(首页需要)
    fileprivate func startAnimation() {
        
        let anim = CABasicAnimation(keyPath: "transform.rotation")
        
        anim.toValue = 2 * M_PI
        anim.repeatCount = MAXFLOAT
        anim.duration = 15
        
        // 重要
        // 动画完成之后不删除，如果iconView被释放，动画会被一起销毁
        // 在设置连续播放的动画非常有用
        anim.isRemovedOnCompletion = false
        
        // 将动画添加到图层
        iconView.layer.add(anim, forKey: nil)
    }
    
    //MARK: -私有控件
    /// 懒加载属性只有调用 UIKit 指定的构造函数 才会有(构造函数不能返回nil才可以)，其他都需要使用类型
    /// 所以最好都加上就不会出现任何问题了
    
    /// 图像视图
    fileprivate lazy var iconView : UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_image_smallicon"))
    
    /// 遮罩图像 - 不要使用maskView 因为跟UIView里的一个属性重名了
    fileprivate lazy var maskIconView : UIImageView = UIImageView(image:UIImage(named: "visitordiscover_feed_mask_smallicon"))
    
    /// 小房子
    fileprivate lazy var houseIconView : UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_image_house"))
    
    /// 提示标签
    fileprivate lazy var tipLabel : UILabel = UILabel.cz_label(
        withText: "关注一些人，回这里看看有什么惊喜",
        fontSize: 14,
        color: UIColor.darkGray)
    
    /// 注册按钮
    lazy var registerBtn : UIButton = UIButton.cz_textButton(
        "注册",
        fontSize: 16,
        normalColor: UIColor.orange,
        highlightedColor: UIColor.blue,
        backgroundImageName: "common_button_white_disable")
    
    /// 登录按钮
    lazy var loginBtn : UIButton = UIButton.cz_textButton(
        "登录",
        fontSize: 16,
        normalColor: UIColor.darkGray,
        highlightedColor: UIColor.blue,
        backgroundImageName: "common_button_white_disable")
}

//MARK: -设置界面
extension XTVistorView {
    // 在开发的时候能使用颜色就不要使用图像，颜色效率会更高
    func setupUI() {
        // 将遮罩没有盖住的部分 通过设置背景色颜色给补全
        backgroundColor = UIColor.cz_color(withHex: 0xEDEDED)
        
        // 添加控件
        addSubview(iconView)
        addSubview(maskIconView)
        addSubview(houseIconView)
        addSubview(tipLabel)
        addSubview(registerBtn)
        addSubview(loginBtn)
        
        // 取消autoresizing 因为 autoresizing 和 autolayout 是不能共存的
//        for v in subviews {
//            v.translatesAutoresizingMaskIntoConstraints = false
//        }
        
        // 自动布局
        
        let margin : CGFloat = 20.0
        
        // 图像
        iconView.snp.makeConstraints { (make) -> Void in
            make.center.equalTo(self)
        }
        
        // 遮罩视图
        maskIconView.snp.makeConstraints { (make) -> Void in
            make.top.equalTo(self.snp.top)
            make.left.equalTo(self.snp.left)
            make.width.equalTo(self.snp.width)
            make.bottom.equalTo(self.registerBtn.snp.centerY)
        }
        
        // 小房子
        houseIconView.snp.makeConstraints { (make) -> Void in
            make.center.equalTo(self.iconView)
        }
        
        // 提示标签
        tipLabel.snp.makeConstraints { (make) -> Void in
            make.top.equalTo(self.iconView.snp.bottom).offset(margin)
            make.width.equalTo(236)
            make.centerX.equalTo(self)
        }
        
        // 注册按钮
        registerBtn.snp.makeConstraints { (make) -> Void in
            make.top.equalTo(self.tipLabel.snp.bottom).offset(margin)
            make.left.equalTo(self.tipLabel.snp.left)
            make.width.equalTo(100)
        }
        
        // 登录按钮
        loginBtn.snp.makeConstraints { (make) -> Void in
            make.top.equalTo(self.tipLabel.snp.bottom).offset(margin)
            make.right.equalTo(self.tipLabel.snp.right)
            make.width.equalTo(100)
        }

    }
}
